package com.zero.guava.samples.ObjectsDemo;

import com.google.common.base.Objects;

/**
 *  Objects：Object方法工具类
 */
public class ObjectsDemo {

    public static void main(String[] args) {
        ObjectsDemo objectsDemo = new ObjectsDemo();
        objectsDemo.testObjects();
    }

    public void testObjects() {
        //equal方法：用于判断两个对象是否相等,避免空指针
        Objects.equal(null, 123);//false
        Objects.equal(123, 123);//true
        Objects.equal(123, null);//false
        Objects.equal(null, null);//true

        //hashCode方法：获取对传入的字段做哈希运算后产生的hashCode值
        //判断两个对象完全相同时，除了equals为真，hashCode也需要相同

        //firstNonNull：传入两个参数，返回两个参数中不为空的那个，如果二者都不为空，返回第一个参数。
        System.out.println(Objects.firstNonNull(null,"you are null"));//this is null
        System.out.println(Objects.firstNonNull("i am not null","you are null"));//i am not null
        //System.out.println(Objects.firstNonNull(null,null));//NullPointerException

        //toStringHelper方法:用于轻松愉快的编写toString方法
        System.out.println(Objects.toStringHelper(this)
                .add("name", "Realfighter")
                .add("age", null)
                //注释omitNullValues后输出：ObjectsTest{name=Realfighter, age=null}
                .omitNullValues()
                .toString()); //ObjectsTest{name=Realfighter}
    }
}
